using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;

namespace SCRUM.Core.Configuration
{
    /// <summary>
    /// Config class
    /// </summary>
    public class Config
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="Config"/> class.
        /// </summary>
        public Config()
        {
        }

        /// <summary>
        /// Gets or sets the DB provider XML.
        /// </summary>
        /// <value>The DB provider XML.</value>
        [XmlElement("DBProviderXml")]
        public string DBProviderXml { get; set; }

        /// <summary>
        /// Gets or sets the DB provider XML.
        /// </summary>
        /// <value>The DB provider XML.</value>
        [XmlElement("MembershipDBProviderXml")]
        public string MembershipDBProviderXml { get; set; } 

        /// <summary>
        /// Gets the widgets configuration.
        /// </summary>
        /// <value>The configuration.</value>
        [XmlElement("Widgets")]
        public WidgetConfiguration Widgets { get; set; }

        /// <summary>
        /// Gets or sets the membership.
        /// </summary>
        /// <value>The membership.</value>
        [XmlElement("Membership")]
        public MembershipConfiguration Membership { get; set; }

        /// <summary>
        /// Gets or sets the SVN states.
        /// </summary>
        /// <value>The SVN states.</value>
        [XmlElement("SVNStates")]
        public SVNTaskStates SVNStates { get; set; }

        /// <summary>
        /// Gets or sets the output properties.
        /// </summary>
        /// <value>The output properties.</value>
        [XmlElement("OutputProperties")]
        public OutputConfiguration OutputProperties { get; set; }

		/// <summary>
		/// Gets or sets the themes.
		/// </summary>
		/// <value>The themes.</value>
		[XmlArray("Themes")]
		[XmlArrayItem("Theme",typeof(ThemeConfiguration))]
		public List<ThemeConfiguration> Themes { get; set; }
    }
}
